﻿using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Text.Json.Serialization;
namespace BPM.Web.Shared.Data;

/// <summary>
/// 系统通知公告详情参数
/// </summary>
public partial class NoticeDetailOutput : BaseVM
{
    /// <summary>
    /// 主键Id
    /// </summary>
    [DisplayName("业务号")]
    [Required(ErrorMessage = "业务号不能为空")]
    [JsonPropertyName("id")]
    public long Id { get; set; }

    /// <summary>
    /// 标题
    /// </summary>
    [DisplayName("标题")]
    [JsonPropertyName("title")]
    public string? Title { get; set; }

    /// <summary>
    /// 内容
    /// </summary>
    [DisplayName("内容")]
    [JsonPropertyName("content")]
    public string? Content { get; set; }

    /// <summary>
    /// 类型（字典 1通知 2公告）
    /// </summary>
    [DisplayName("类型（字典 1通知 2公告）")]
    [JsonPropertyName("type")]
    public int Type { get; set; }

    /// <summary>
    /// 发布人Id
    /// </summary>
    [DisplayName("发布人Id")]
    [JsonPropertyName("publicUserId")]
    public long PublicUserId { get; set; }

    /// <summary>
    /// 发布人姓名
    /// </summary>
    [DisplayName("发布人姓名")]
    [JsonPropertyName("publicUserName")]
    public string? PublicUserName { get; set; }

    /// <summary>
    /// 发布机构Id
    /// </summary>
    [DisplayName("发布机构Id")]
    [JsonPropertyName("publicOrgId")]
    public long PublicOrgId { get; set; }

    /// <summary>
    /// 发布机构名称
    /// </summary>
    [DisplayName("发布机构名称")]
    [JsonPropertyName("publicOrgName")]
    public string? PublicOrgName { get; set; }

    /// <summary>
    /// 发布时间
    /// </summary>
    [DisplayName("发布时间")]
    [JsonPropertyName("publicTime")]
    public System.DateTimeOffset? PublicTime { get; set; }

    /// <summary>
    /// 撤回时间
    /// </summary>
    [DisplayName("撤回时间")]
    [JsonPropertyName("cancelTime")]
    public System.DateTimeOffset? CancelTime { get; set; }

    /// <summary>
    /// 状态（字典 0草稿 1发布 2撤回 3删除）
    /// </summary>
    [DisplayName("状态（字典 0草稿 1发布 2撤回 3删除）")]
    [JsonPropertyName("status")]
    public int Status { get; set; }

    /// <summary>
    /// 通知到的用户Id集合
    /// </summary>
    [DisplayName("通知到的用户Id集合")]
    [JsonPropertyName("noticeUserIdList")]
    public IEnumerable<string> NoticeUserIdList { get; set; } = Enumerable.Empty<string>();

    /// <summary>
    /// 通知到的用户阅读信息集合
    /// </summary>
    [DisplayName("通知到的用户阅读信息集合")]
    [JsonPropertyName("noticeUserReadInfoList")]
    public IEnumerable<NoticeUserRead> NoticeUserReadInfoList { get; set; } = Enumerable.Empty<NoticeUserRead>();
}
